# prepare_data.py
import os
import sys

sys.path.append('utils')

from data_processor import CSVDataProcessor
from config import Config


def create_directory_structure():
    """创建目录结构"""
    print("创建目录结构...")

    # 创建原始数据目录结构
    for activity in Config.ACTIVITY_MAPPING.keys():
        activity_dir = os.path.join(Config.RAW_DATA_DIR, activity)
        os.makedirs(activity_dir, exist_ok=True)
        print(f"创建目录: {activity_dir}")

    # 创建其他目录
    os.makedirs(Config.PROCESSED_DATA_DIR, exist_ok=True)
    os.makedirs(Config.TEST_DATA_DIR, exist_ok=True)
    os.makedirs(Config.MODEL_SAVE_DIR, exist_ok=True)

    print("目录结构创建完成!")


def main():
    """数据准备主函数"""
    print("=== 摔倒检测数据准备 ===")

    # 创建目录结构
    create_directory_structure()

    # 初始化数据处理器
    processor = CSVDataProcessor()

    # 处理训练数据
    print("\n处理训练数据...")
    sequences, labels = processor.process_all_data(Config.RAW_DATA_DIR)

    if sequences is not None:
        # 准备训练数据
        training_data = processor.prepare_training_data(sequences, labels)

        if training_data is not None:
            X_train, X_val, X_test, y_train, y_val, y_test = training_data

            # 保存预处理器
            processor.save_preprocessor()

            print(f"\n数据准备完成!")
            print(f"请将测试文件放在: {Config.TEST_DATA_DIR}")
            print(f"然后运行: python train_model.py")
        else:
            print("数据准备失败")
    else:
        print("没有找到有效的训练数据")
        print(f"请将CSV文件按照活动类型放在对应的目录中:")
        for activity in Config.ACTIVITY_MAPPING.keys():
            print(f"  {Config.RAW_DATA_DIR}/{activity}/")


if __name__ == "__main__":
    main()